<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 第一种：原型链式继承
        // function Lol() {
        //     this.name = "英雄联盟"
        //     this.type = "端游"
        // }
        // Lol.prototype.say = function() {
        //     console.log('欢迎进入英雄联盟')
        // }
        // function Role() {
        //     this.name = "孙悟空"
        // }
        
        // Role.prototype = new Lol()
        // // console.log(Role.prototype)
        // Role.prototype.constructor = Role
        // var role = new Role()
        // console.log(role)

        // var obj = {

        // }
        // console.log(obj.name)
        // role.say()
        // 2构造函数继承
        var obj = {}
        function Lol(name, type) {
            // console.log(this)
            this.name = name
            this.type = type
        }

        function Role() {
            this.rname = "孙悟空"
            // Lol.call(this, "英雄联盟", "端游")
            // Lol.apply(this, [ "英雄联盟", "端游"])
            Lol.bind(this)("英雄联盟", "端游")
            
        }

        var role = new Role()
        console.log(role)
        // 改变this指向的方法 call bind apply
        // 他们的第一个参数都是要修改的this指向 指向的对象
        // call 的其他参数以散落的形式传递给调用call方法的函数
        // apply 的其他参数以数组的形式传递给调用apply方法的函数
        // bind返回一个函数 返回的函数就是调用bind方法的函数本身
    </script>
</body>
</html>